package com.snow.useviewdemo.util;

import android.util.Log;

/**
 * Created by zhaoyingtao
 * Date: 2021/7/1
 * Describe:
 */
public class LogUtils {
    public static boolean isDebug = false;
    public static final String TAG = "LogUtils";

    private LogUtils() {
    }

    public static void setDebug(boolean isDebug) {
        LogUtils.isDebug = isDebug;
    }

    public static void v(String msg) {
        v("LogUtils", msg);
    }

    public static void d(String msg) {
        d("LogUtils", msg);
    }

    public static void i(String msg) {
        i("LogUtils", msg);
    }

    public static void w(String msg) {
        w("LogUtils", msg);
    }

    public static void e(String msg) {
        e("LogUtils", msg);
    }

    public static void v(String tag, String msg) {
        if (isDebug) {
            segmentLog(tag, msg, 2);
        }
    }

    public static void d(String tag, String msg) {
        if (isDebug) {
            segmentLog(tag, msg, 3);
        }
    }

    public static void i(String tag, String msg) {
        if (isDebug) {
            segmentLog(tag, msg, 4);
        }
    }

    public static void w(String tag, String msg) {
        if (isDebug) {
            segmentLog(tag, msg, 5);
        }
    }

    public static void e(String tag, String msg) {
        if (isDebug) {
            segmentLog(tag, msg, 6);
        }
    }

    private static void segmentLog(String tag, String msg, int priority) {
        if (tag != null && tag.length() != 0 && msg != null && msg.length() != 0) {
            short segmentSize = 3072;
            while(msg.length() > segmentSize) {
                String logContent = msg.substring(0, segmentSize);
                msg = msg.replace(logContent, "");
                log(tag, logContent, priority);
            }
            log(tag, msg, priority);
        }
    }

    private static void log(String tag, String msg, int priority) {
        switch(priority) {
            case 2:
                Log.v(tag, msg);
                break;
            case 3:
            default:
                Log.d(tag, msg);
                break;
            case 4:
                Log.i(tag, msg);
                break;
            case 5:
                Log.w(tag, msg);
                break;
            case 6:
                Log.e(tag, msg);
        }

    }
}
